package com.yt.system.controller;

import com.alibaba.fastjson.JSONObject;
import com.yt.system.domain.*;
import com.yt.system.service.QuestionsService;
import com.yt.system.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @author 高铭
 * @date 2019/9/22 - 14:31
 *      小组360评分强拍，得到当前这周的每个组的最后一名
 */
@Api(value = "360强排相关接口",tags = "360强排相关接口")
@RestController
public class GroupSortController {
    @Autowired
    private QuestionsService questionsService;

    @Autowired
    private UserService userService;

    @ApiOperation(value = "管理员动态添加问卷题目(已完成)")
    @RequestMapping(value = "/adminInsertQuestions",method = RequestMethod.POST)
    public void adminInsertQuestions(@RequestBody JsonRootBean myData){
        questionsService.adminInsertQuestions(myData);
    }
    /**
     *      随机抽出10道已经创建好的评价问卷，让组员相互评价，顺带将当前用户所在小组的其余人员信息返回，进行人员评分
     * @param uid
     * @param gid
     * @return
     */
    @ApiOperation(value = "（已完成）随机抽出10道（题目+选项+选项对应的分数）已经创建好的评价问卷，" +
            "让组员相互评价，顺带将当前用户所在小组的其余人员信息返回，进行人员评分")
    @RequestMapping(value = "/getQuestion",method = RequestMethod.POST)
    public Map<String,Object> getQuestion(Integer uid, Integer gid){
        Map<String,Object> map = new HashMap<>();
        //查找题目以及题目选项对应的分值
        JsonRootBean mapQuestionList = questionsService.getQuestion();
        //查找除自己之外的当前小组的其他人员信息
        List<User> userList = userService.getGroupOtherUser(uid,gid);
        map.put("mapQuestionList",mapQuestionList);
        map.put("userList",userList);
        return map;
    }

    /**
     * @description 前端返回用户做题的结果，得出小组强排的最终结果
     * @author 高铭
     * @Date   2019/9/30 - 9:44
     * @Param  [data]
     * @return java.lang.String
     */
    @ApiOperation(value = "前端返回用户做题的结果，保存用户的强排评分")
    @RequestMapping(value = "/insertGroupPeopleScore",method = RequestMethod.POST)
    public String insertGroupPeopleScore(@RequestBody List<Sorttable> data){
        questionsService.insertGroupScore(data);
        return "success";
    }
    @ApiOperation(value = "前端传入当周有效的组gid，得出小组强排的最终结果（组长是最后一名则总分 / 2 ，" +
            "组长不是最后一名，总分 * 2 ，最后一名是普通成员，总分 / 2）")
    @RequestMapping(value = "getTheGroupSortedPeople",method = RequestMethod.POST)
    public LinkedList<SortedUser> getTheGroupSortedPeople(Integer gid){
        //修改评分最后一名人员的总分
        /*questionsService.updTheLastSortedUserScore(gid);*/
        //根据当周时间查询出这周的强排的情况
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String sortTime = sdf.format(new Date());
        LinkedList<SortedUser> sortedUserList = questionsService.getTheGroupSortedPeople(gid,sortTime);
        //如果返回的数据是null,代表这个组还没进行排名
        return sortedUserList;
    }
}
